The Infiniband® network includes nodes that communicate through a channel-based switched fabric (Infiniband® is a registered trademark of Infiniband Trade Association, located in Beaverton, Oreg.). For example, the nodes may be a host, an input/output subsystem, or a router which connects to another network. The switched fabric is made of a collection of switches, routers, and/or links that connect a set of channel adapters. The channel adapters form an interface between the switched fabric and the nodes. The channel adapter of the host is referred to as a host channel adapter. The channel adapter of an I/O subsystem is referred to as a target channel adapter.
In Infiniband®, two processes communicate using queue pairs. A queue pair includes a send queue and a receive queue. Specifically, a queue pair defines communication channels between the two processes. More specifically, an application uses the send queue to receive messages and the receive queue to send messages. The send queue and receive queue on the same host that is used by the process to communicate with another process form a queue pair. Each queue pair may have a corresponding queue pair with which to communicate. Specifically, in order for a process to send a message to another process, the process posts the message to the send queue. The host channel adapter forwards the message to the receive queue of the corresponding queue pair. Each packet that is sent may include a packet sequence number. Logic associated with the receive queue ensures that packets are processed in a particular order using the packet sequence number.